//用于接受前端请求数据
#include <glib.h>
#include <cgic.h>
#include <MsgQueueUtil.h>
#include <string.h>

//这个文件用于接收前段请求的参数

int cgiMain()
{
    char gatewayIp[128];
    char location[256];

    //读取配置信息
    cgiFormString("gatewayIp",gatewayIp,128);
    cgiFormString("location",location,256);

    //保存一个ini配置文件，配置文件中放的是设备文件路径
    GKeyFile *file = g_key_file_new();
    g_key_file_load_from_file(file,"../config/config.ini",G_KEY_FILE_NONE,0);
    //获取设备文件ini的路径 获取devicepath
    gchar *path = g_key_file_get_string(file,"config","deviceInfoPath",NULL);

    //保存到一个ini设备文件中
    GKeyFile *KeyFile = g_key_file_new();
    //保存信息
    g_key_file_set_string(KeyFile,"config","gatewayIp",gatewayIp);
    g_key_file_set_string(KeyFile,"config","location",location);
    //保存文件
    g_key_file_save_to_file(KeyFile,path,NULL);
    //释放
    g_key_file_free(KeyFile);
    g_key_file_free(file);

    //配置信息存入配置文件后 应该向主进程发送信息 注册这个新的客户端信息
    //使用进程之间的通信(消息队列)
    char *data = "操作成功";
    //初始化消息队列
    int mqId = get_MsgQueue();
    if(mqId == -1)
    {
        data = "操作失败,创建消息队列失败";
    }
    else
    {
        Message msg = {
            .type=1,
            .text="测试"
            };

        //向主进程发送消息
        int ret = sendMsg(mqId,&msg,strlen(msg.text)+1);
        if(ret == -1)
        {
            data = "操作失败,发送消息失败";
        }
    }
    
    //返回一个操作成功的提示
    cgiHeaderContentType("text/html");
	// 给浏览器响应回一个简单的html网页
	fprintf(cgiOut, "<HTML><HEAD> <meta charset=\"UTF-8\"> \n");
	fprintf(cgiOut, "<TITLE>cgic测试</TITLE></HEAD>\n");
	fprintf(cgiOut, "<BODY><H1>%s</H1>\n",data);
    fprintf(cgiOut,"</BODY></HTML>");

    return 0;
}